我的脚本严重依赖外部程序和脚本。我需要确定我需要调用的程序存在。手动地,我会在命令行中使用“which”来检查这一点。对于$PATH中的东西,是否有等同于File.exists?的东西?(是的,我想我可以解析%x[whichscriptINeedToRun]但这不是super优雅。谢谢!亚尼克更新:这是我保留的解决方案:defcommand?(command)system("which#{command}>/dev/null2>&1")end更新2:出现了一些新的答案-至少其中一些提供了更好的解决方案。更新3:ptoolsgem向File类添加了一个“which”方法。
我正在使用RubyonRails3.0.9,我想检查一个数字是否包含在一个范围内。也就是说,如果我有一个变量number=5我想查看1并在number时检索一个bool值值包含在该范围内。我可以这样做:number>=1&&number但我想在一个声明中做到这一点。我该怎么做? 最佳答案 (1..10).include?(number)是诀窍。顺便说一句:如果你想使用ActiveModel::Validations验证一个数字,你甚至可以这样做:validates_inclusion_of:number,:in=>1..10阅读he
我需要能够确定Ruby中的系统最大整数。任何人都知道怎么做,或者是否可能? 最佳答案 FIXNUM_MAX=(2**(0.size*8-2)-1)FIXNUM_MIN=-(2**(0.size*8-2)) 关于Ruby最大整数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/535721/
我知道我可以编写Rubycase语句来检查与正则表达式的匹配。但是,我想在返回语句中使用匹配数据。像这样的半伪代码:foo="10/10/2011"casefoowhen/^([0-9][0-9])/print"themonthis#{match[1]}"elseprint"somethingelse"end我怎样才能做到这一点?谢谢!请注意:我知道我永远不会在上述简单情况下使用switch语句,但这只是一个示例。实际上,我试图实现的是为一个可以用各种方式编写的日期匹配许多潜在的正则表达式,然后相应地使用Ruby的Date类对其进行解析。 最佳答案
我有这个jQuery函数,它返回当前时间作为自纪元(1970年1月1日)以来的毫秒数:time=newDate().getTime();有没有办法在Ruby中做同样的事情?现在,我正在使用Ruby的Time.now.to_i,它运行良好但返回一个10位整数(秒数)如何让它显示毫秒数,就像在jQuery中一样? 最佳答案 require'date'pDateTime.now.strftime('%s')#"1384526946"(seconds)pDateTime.now.strftime('%Q')#"1384526946523"(
我们能否像在java中那样在Ruby中公开接口(interface),并强制Ruby模块或类实现接口(interface)定义的方法。一种方法是使用继承和method_missing来实现相同的目的,但是还有其他更合适的方法吗? 最佳答案 Ruby与任何其他语言一样具有接口(interface)。请注意,您必须注意不要将接口(interface)的概念与interface的概念混淆,接口(interface)是一个单元的职责、保证和协议(protocol)的抽象规范。这是Java、C#和VB.NET编程语言中的关键字。在Ruby中,
有什么巧妙的方法可以将“1,112”转换为整数1112,而不是1?我有一个,但不整洁:"1,112".split(',').join.to_i#=>1112 最佳答案 这个怎么样?"1,112".delete(',').to_i 关于ruby-将带逗号的字符串转换为整数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11466988/
我想像这样将一位数转换为两位数:9==>095==>0512==124==>04我认为我可以放置一堆if-else语句(如果数字小于10,则执行gsub)但我认为那是可怕的编码。我知道Rails有number_with_precision但我发现它只适用于十进制数。关于如何将个位数转换为两位数有什么想法吗? 最佳答案 很多人使用sprintf(这是正确的做法),我认为如果你想对字符串执行此操作,最好保留注意rjust和ljust方法:"4".rjust(2,'0')这将使“4”右对齐,方法是确保它至少有2个字符长,并用“0”填充它。
我需要一个函数,is_an_integer,其中"12".is_an_integer?返回true。"blah".is_an_integer?返回false。我如何在Ruby中执行此操作?我会写一个正则表达式,但我假设有一个我不知道的helper。 最佳答案 好吧,这是简单的方法:classStringdefis_integer?self.to_i.to_s==selfendend>>"12".is_integer?=>true>>"blah".is_integer?=>false我不同意引发异常以转换字符串的解决方案-异常不是控制
有什么区别caseitem.classwhenMyClass#dosomethingherewhenArray#dosomethingdifferentherewhenString#doathirdthingend和caseitem.classwhenMyClass.class#dosomethingherewhenArray.class#dosomethingdifferentherewhenString.class#doathirdthingend出于某种原因,有时第一个有效而第二个无效,有时第二个有效而第一个无效。为什么?哪一种是“正确”的做法? 最佳